开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http | 您所在的位置:网站首页 › h5 rtmp推流 › 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http |
场景 目前市面上有很多开源的流媒体服务器解决方案,常见的有SRS、EasyDarwin、ZLMediaKit和Monibuca等。 1、SRS GitHub - ossrs/srs: SRS is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and GB28181. 2、EasyDarwin https://github.com/EasyDarwin/EasyDarwin 3、Monibuca Monibuca · GitHub 4、ZLMediaKit GitHub - ZLMediaKit/ZLMediaKit: WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT server and client framework based on C++11 ZLMediaKit: 实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求 ZLMediaKit是一套高性能的流媒体服务框架,目前支持rtmp、rtsp、hls、http-flv等流媒体协议, 支持linux、macos、windows三大PC平台和ios、android两大移动端平台。 ZLMediaKit功能概览
注: 博客: 实现1、ZlMediaKit各文档说明地址 Home · ZLMediaKit/ZLMediaKit Wiki · GitHub 其功能较多,这里我们需要的是在Windows上运行,以及修改配置文件配置一些端口地址等配置,并实现按需拉流。 比如前端选择某摄像头之后,才进行拉取该摄像头的rtsp视频流,并转换成能网页能播放的Http-flv格式的视频流。 所以需要的文档只有如下: 配置文件详解: ZLMediaKit/config.ini at master · ZLMediaKit/ZLMediaKit · GitHub 按需拉流: ZLMediaKit实现按需拉流 · ZLMediaKit/ZLMediaKit Wiki · GitHub RESTful接口: MediaServer支持的HTTP API · ZLMediaKit/ZLMediaKit Wiki · GitHub 播放URL规则: 播放url规则 · ZLMediaKit/ZLMediaKit Wiki · GitHub
实现按需拉流流程 文档地址: ZLMediaKit实现按需拉流 · ZLMediaKit/ZLMediaKit Wiki · GitHub
2、Windows上运行ZLMediaKit Windows上无直接可用版本,一种是可以根据文档说明自己进行编译。 快速开始 · ZLMediaKit/ZLMediaKit Wiki · GitHub 一种是直接从网络上下载别人编译好的版本。 这里选择直接下载别人编译之后的版本使用,比如下面: Windows上ZLMediakit编译后可直接运行版本(带外置配置文件和运行可能所需dll依赖): 下载解压之后,MediaServer.exe是服务主程序,config.ini是配置文件。
编辑config.ini配置文件,根据自己需要进行修改,具体参照官方配置说明 这里是将Http的端口由原来的80改为800了
修改完配置文件之后,管理员模式启动MediaServer.exe即可。 启动成功之后的页面
其他功能所需配置根据自己需要决定开启或关闭,以及默认这些开启配置的端口注意不要冲突, 比如554、332、1935、19350、800、1443、9000、10002等配置文件中配置的端口。 ZLMediaKit启动时提示:由于找不到libcrypto-1_1x64.dll,无法继续执行代码。
以及提示:由于找不到libssl-1_1-x64.dll,无法继续执行代码。
则系统需要该两个依赖,从网络下载这两个dll,或者从上面资源中 将这两个dll,放到C:\Windows\System32目录下
添加如上两个dll之后,如果ZLMediaKit仍然启动时报错,则是缺少其他必须的依赖dll,另外两个dll也从上面复制到 System32目录下,或者从网络上自行下载之后复制过去。 faac: Freeware Advanced Audio Codec download | SourceForge.net SDL2: Simple DirectMedia Layer - Homepage 3、实现按需拉流 这里以拉取rtsp视频流为例。 比如拉取宇视的rtsp的视频流。 rtsp://[username]:[password]@[ip]:[port]/media/video1/2/3说明: username: 用户名。例如admin。 password: 密码。例如admin123。 ip: 为设备IP。例如 192.168.1.107。 port: 端口号默认为554,若为默认可不填写。 video: 1代表主码流、2辅码流、3第三码流 如:rtsp://admin:[email protected]/media/video2 使用vlc拉取rtsp视频流确保能进行拉流和预览
按照文档说明如果需要实现按需拉流,需要在要拉流预览时调用api,所有api都可用get或post进行请求 /index/api/addStreamProxy 参数说明
参考给出的示例url http://127.0.0.1/index/api/addStreamProxy?vhost=__defaultVhost__&app=proxy&stream=0&url=rtmp://live.hkstv.hk.lxdns.com/live/hks2 修改为 http://127.0.0.1:800/index/api/addStreamProxy?vhost=127.0.0.1&app=live&stream=test&url=rtsp://admin:123456@摄像头Ip/media/video2 这里都是在本地,并且配置的http的端口为800,然后指定虚拟主机地址也为本地,如果在服务器上,则配置为服务器的地址,然后设置流的应用名和流的唯一标识id 将以上地址在浏览器中访问或者用postman等测试工具中请求,请求成功时
状态码返回0,返回流应用名live,以及流的唯一标识id为test。 那么这些关键字可以根据文档URL的规则说明中进行拼接其他视频流格式。 比如拼接http-flv的格式为 http://127.0.0.1:800/live/test.flv 那么这个地址就可以直接在vlc或者网页中进行播放。 我们统一在vlc中进行播放http-flv以及原生rtsp的视频流进行对比延迟
如果rtsp的流地址播放失败则返回-1
4、播放URl规则 注意上面播放URL规则中 老代码flv直播后缀为.flv,新代码才改成了.live.flv,这里是老版本的编译版本。
这里的live就是对应上面api调用时的流应用名,0就是对应的流id。 所以这里对应的url为 http://127.0.0.1:800/live/test.flv 在html以及Vue中播放http-flv格式的视频可参考如下: Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流: Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流_rtmp转flv_霸 5、不是部署在本机 上面调用api进行按需拉流时地址是127.0.0.1,如果ZLMediaKit在服务器上,如果直接修改ip为服务器ip则会提示 缺少必要参数secret
根据接口说明
如果操作Ip不是本机,则需要添加这个参数,参数获取在服务器上配置文件中获取
6、按需拉取多个rtsp流 如果说需要拉取多个视频流,则只需要调用接口时传递流id不同即可,流应用没必要改变。 http://127.0.0.1:800/index/api/addStreamProxy?vhost=127.0.0.1&app=live&stream=test2&url=rtsp://admin:123456@第二个摄像头Ip/media/video2 比如传递test2
则第二个摄像头的预览地址对应为 http://127.0.0.1:800/live/test2.flv |
CopyRight 2018-2019 实验室设备网 版权所有 |